/**
 * File: CurtainContext.java
 * Created by: mhaimel
 * Created on: 6 Jul 2009
 * CVS:  $Id: CurtainContext.java,v 1.3 2009/09/01 10:52:46 mhaimel Exp $
 */
package uk.ac.ebi.curtain;

import java.io.File;
import java.util.concurrent.ConcurrentMap;

import uk.ac.ebi.curtain.configuration.CurtainInputArguments;
import uk.ac.ebi.curtain.configuration.FileLocations;
import uk.ac.ebi.curtain.model.graph.curtain.CurtainGraph;
import uk.ac.ebi.curtain.service.GlobalFileInfoIdx;
import uk.ac.ebi.curtain.service.IdentifierFilepositionIndex;
import uk.ac.ebi.curtain.service.IdentifierStore;
import uk.ac.ebi.curtain.util.file.FileAccessService;

import com.google.inject.ImplementedBy;
import com.google.inject.Injector;

/**
 * @author mhaimel
 *
 */
@ImplementedBy(CurtainContextImpl.class)
public interface CurtainContext {
	
	Injector getInjector();	
	CurtainInputArguments getArguments();
	GlobalFileInfoIdx getGlobalFileIndex();
	IdentifierStore<String, Integer> getContigIndex();
	CurtainGraph getGraph();
	void setGraph(CurtainGraph graph);
//	IdentifierStore<String, Integer> getReadIndex();
	
//	IdentifierStore<Integer,ReadData> getReadData();
//	IdentifierStore<Integer,ContigData> getContigData();
	
	IdentifierFilepositionIndex getPositionIndex(File file);
	FileLocations currentFiles();
	
	FileAccessService getFileAccess();
	
	ConcurrentMap<String, Object> getScratchBoard();
	
}
